import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

//插入
public class Demo {
    public static void main(String[] args) throws SQLException {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        //1.先创建一个dataSource(数据源)
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource) dataSource) .setUrl("jdbc:mysql://localhost:3306/test_rjw?characterEncoding=utf8&useSSL=false");
        //当然还可以这么写:(但是不太建议)
//        MysqlDataSource mysqlDataSource=new MysqlDataSource();
//        mysqlDataSource.setUrl();

        //2.进行认证(设置用户名和密码)，到这只是准备工作，没有真正跟数据库进行连接
        ((MysqlDataSource) dataSource) .setUser("root");
        ((MysqlDataSource) dataSource) .setPassword("200483");

        //3.建立和数据库的连接，链接好了之后，才能进行后续的 请求—相应 交互
        //throws SQLException 如果执行sql或者操作数据库过程中出现问题，一般都会抛出这个异常
        Connection connection=dataSource.getConnection();

        //4.构造sql(代码中的sql不需要写';')
        //String sql = "insert into student values(1,'张三')";
        //这种方式不安全:
//        String sql="insert into student values("+id+",'"+name+"')";
        String sql = "insert into student values(?,?)";
        PreparedStatement statement=connection.prepareStatement(sql);
        //使用PreparedStatement提供的方法:
        //第一个参数表示的是第几个'？'
        statement.setInt(1,id);
        statement.setString(2,name);

        //5.发送sql给服务器，执行sql
        //注意这里返回的n是数据库受到影响的行数
        int n = statement.executeUpdate();

        //6.执行完毕之后关闭连接，释放资源，释放顺序是,后获取到的资源,先释放。
        statement.close();
        connection.close();



    }
}
